package com.gxa.pingan.mapper;

import com.gxa.pingan.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 订单操作的实现
 * @author YXQ
 * @date 2021/10/25 19:05
 */
public interface OrderMapper {
    /**
     * 添加订单
     * @param map 订单实体
     */
    void addBaseOrder(Map<String,Object> map);

    /**
     * 添加订单--图片---未完成
     * @param orderImg 添加的图片对象
     */
    void addOrderImg(OrderImg orderImg);

    /**
     * 添加订单其他字段
     * @param orderOther 订单其他的实体类
     */
    void addOrderOther(OrderOther orderOther);

    /**
     * 添加订单支付表
     * @param orderPay 订单支付
     */
    void addOrderPay(OrderPay orderPay);

    /**
     * 导入时向数据库添加订单
     * @param orderVo 订单的Vo对象
     */
    void addImportOrder(OrderVo orderVo);

    /**
     * 获取区域信息的列表
     * @return 城市的集合
     */
    List<City> getAreaList();

    /**
     * 获取司机信息的列表
     * @param areaName 区域信息
     * @return 司机信息的列表
     */
    List<Driver> getDriverList(String areaName);

    /**
     * 获取店铺信息的列表
     * @param areaName 区域信息
     * @param storesType 店铺的类型
     * @return 店铺信息的列表
     */
    List<Shop> getShopList(String areaName,Integer storesType);

    /**
     * 获取订单状态的信息的列表
     * @return 订单信息的列表
     */
    List<Message> getOrderTypeList();

    /**
     * 获取订单来源的信息的列表
     * @return 订单信息的列表
     */
    List<Message> getOrderSourceList();

    /**
     * 获取订单类型的信息的列表
     * @return 订单信息的列表
     */
    List<Message> getTypeList();

    /**
     * 获取订单页面的方法
     * @param map 参数列表
     * @return 订单列表
     */
    List<Order> getOrderList(Map<String, Object> map);

    /**
     * 获取所有已经还车的订单的列表
     * @return 订单列表
     */
    List<OrderVo> getReturnCarList();

    /**
     * 批量删除订单
     * @param deleteIds 订单编号的数组
     */
    void deleteBatchOrder(List<Integer> deleteIds);

    /**
     * 批量导出
     * @param exportIds 导出数据的编号数组
     * @return 订单列表
     */
    List<OrderVo> exportBatchOrderList(List<Integer> exportIds);

    /**
     * 获取第三方订单的方法
     * @return 订单列表
     */
    List<OrderVo> getThreeOrderList();

    /**
     * 通过订单编号获取订单的详细信息
     * @param orderNum 订单偏好
     * @return 储存订单信息的编号
     */
    Order getOrderAll(String orderNum);
}
